<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>防止重复发送请求</title>
  </head>
  <body>
    <button>点击发送</button>

    <script>
      const btn = document.getElementsByTagName("button")[0];

      let x = null;

      let isSending = false;
      //表示是否在发送

      btn.addEventListener("click", function () {
        if (isSending) x.abort();
        //如果正在发送，则取消这个请求，继续往下走

        x = new XMLHttpRequest();
        //当执行了创建对象，就代表将要发送，所以设置标识量为true

        isSending = true;

        x.open("GET", "http://127.0.0.1:7000/delay");
        //对象初始化

        x.send();

        x.onreadystatechange = function () {
          if (x.readyState === 4) {
            isSending = false;
            //readyState == 4表示请求完成了

            console.log(x.response);
          }
        };
      });
    </script>
  </body>
</html>
